home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / misc / ExtensionInfo.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  4.4 KB  |  253 lines

  1. package sun.misc;
  2.  
  3. import java.text.MessageFormat;
  4. import java.util.ResourceBundle;
  5. import java.util.StringTokenizer;
  6. import java.util.jar.Attributes;
  7. import java.util.jar.Attributes.Name;
  8.  
  9. public class ExtensionInfo {
  10.    public static final int COMPATIBLE = 0;
  11.    public static final int REQUIRE_SPECIFICATION_UPGRADE = 1;
  12.    public static final int REQUIRE_IMPLEMENTATION_UPGRADE = 2;
  13.    public static final int REQUIRE_VENDOR_SWITCH = 3;
  14.    public static final int INCOMPATIBLE = 4;
  15.    public String title;
  16.    public String name;
  17.    public String specVersion;
  18.    public String specVendor;
  19.    public String implementationVersion;
  20.    public String vendor;
  21.    public String vendorId;
  22.    public String url;
  23.    // $FF: renamed from: rb java.util.ResourceBundle
  24.    private static final ResourceBundle field_0 = ResourceBundle.getBundle("sun.misc.resources.Messages");
  25.  
  26.    public ExtensionInfo() {
  27.    }
  28.  
  29.    public ExtensionInfo(String var1, Attributes var2) throws NullPointerException {
  30.       String var3;
  31.       if (var1 != null) {
  32.          var3 = var1 + "-";
  33.       } else {
  34.          var3 = "";
  35.       }
  36.  
  37.       String var4 = var3 + Name.EXTENSION_NAME.toString();
  38.       this.name = var2.getValue(var4);
  39.       if (this.name != null) {
  40.          this.name = this.name.trim();
  41.       }
  42.  
  43.       var4 = var3 + Name.SPECIFICATION_TITLE.toString();
  44.       this.title = var2.getValue(var4);
  45.       if (this.title != null) {
  46.          this.title = this.title.trim();
  47.       }
  48.  
  49.       var4 = var3 + Name.SPECIFICATION_VERSION.toString();
  50.       this.specVersion = var2.getValue(var4);
  51.       if (this.specVersion != null) {
  52.          this.specVersion = this.specVersion.trim();
  53.       }
  54.  
  55.       var4 = var3 + Name.SPECIFICATION_VENDOR.toString();
  56.       this.specVendor = var2.getValue(var4);
  57.       if (this.specVendor != null) {
  58.          this.specVendor = this.specVendor.trim();
  59.       }
  60.  
  61.       var4 = var3 + Name.IMPLEMENTATION_VERSION.toString();
  62.       this.implementationVersion = var2.getValue(var4);
  63.       if (this.implementationVersion != null) {
  64.          this.implementationVersion = this.implementationVersion.trim();
  65.       }
  66.  
  67.       var4 = var3 + Name.IMPLEMENTATION_VENDOR.toString();
  68.       this.vendor = var2.getValue(var4);
  69.       if (this.vendor != null) {
  70.          this.vendor = this.vendor.trim();
  71.       }
  72.  
  73.       var4 = var3 + Name.IMPLEMENTATION_VENDOR_ID.toString();
  74.       this.vendorId = var2.getValue(var4);
  75.       if (this.vendorId != null) {
  76.          this.vendorId = this.vendorId.trim();
  77.       }
  78.  
  79.       var4 = var3 + Name.IMPLEMENTATION_URL.toString();
  80.       this.url = var2.getValue(var4);
  81.       if (this.url != null) {
  82.          this.url = this.url.trim();
  83.       }
  84.  
  85.    }
  86.  
  87.    public int isCompatibleWith(ExtensionInfo var1) {
  88.       if (this.name != null && var1.name != null) {
  89.          if (this.name.compareTo(var1.name) == 0) {
  90.             if (this.specVersion != null && var1.specVersion != null) {
  91.                int var2 = this.compareExtensionVersion(this.specVersion, var1.specVersion);
  92.                if (var2 < 0) {
  93.                   return this.vendorId != null && var1.vendorId != null && this.vendorId.compareTo(var1.vendorId) != 0 ? 3 : 1;
  94.                } else {
  95.                   if (this.vendorId != null && var1.vendorId != null) {
  96.                      if (this.vendorId.compareTo(var1.vendorId) != 0) {
  97.                         return 3;
  98.                      }
  99.  
  100.                      if (this.implementationVersion != null && var1.implementationVersion != null) {
  101.                         var2 = this.compareExtensionVersion(this.implementationVersion, var1.implementationVersion);
  102.                         if (var2 < 0) {
  103.                            return 2;
  104.                         }
  105.                      }
  106.                   }
  107.  
  108.                   return 0;
  109.                }
  110.             } else {
  111.                return 0;
  112.             }
  113.          } else {
  114.             return 4;
  115.          }
  116.       } else {
  117.          return 4;
  118.       }
  119.    }
  120.  
  121.    public String toString() {
  122.       return "Extension : title(" + this.title + "), name(" + this.name + "), spec vendor(" + this.specVendor + "), spec version(" + this.specVersion + "), impl vendor(" + this.vendor + "), impl vendor id(" + this.vendorId + "), impl version(" + this.implementationVersion + "), impl url(" + this.url + ")";
  123.    }
  124.  
  125.    private int compareExtensionVersion(String var1, String var2) throws NumberFormatException {
  126.       var1 = var1.toLowerCase();
  127.       var2 = var2.toLowerCase();
  128.       return this.strictCompareExtensionVersion(var1, var2);
  129.    }
  130.  
  131.    private int strictCompareExtensionVersion(String var1, String var2) throws NumberFormatException {
  132.       if (var1.equals(var2)) {
  133.          return 0;
  134.       } else {
  135.          StringTokenizer var3 = new StringTokenizer(var1, ".,");
  136.          StringTokenizer var4 = new StringTokenizer(var2, ".,");
  137.          int var5 = 0;
  138.          int var6 = 0;
  139.          boolean var7 = false;
  140.          if (var3.hasMoreTokens()) {
  141.             var5 = this.convertToken(var3.nextToken().toString());
  142.          }
  143.  
  144.          if (var4.hasMoreTokens()) {
  145.             var6 = this.convertToken(var4.nextToken().toString());
  146.          }
  147.  
  148.          if (var5 > var6) {
  149.             return 1;
  150.          } else if (var6 > var5) {
  151.             return -1;
  152.          } else {
  153.             int var8 = var1.indexOf(".");
  154.             int var9 = var2.indexOf(".");
  155.             if (var8 == -1) {
  156.                var8 = var1.length() - 1;
  157.             }
  158.  
  159.             if (var9 == -1) {
  160.                var9 = var2.length() - 1;
  161.             }
  162.  
  163.             return this.strictCompareExtensionVersion(var1.substring(var8 + 1), var2.substring(var9 + 1));
  164.          }
  165.       }
  166.    }
  167.  
  168.    private int convertToken(String var1) {
  169.       if (var1 != null && !var1.equals("")) {
  170.          int var2 = 0;
  171.          int var3 = 0;
  172.          int var4 = 0;
  173.          int var5 = var1.length();
  174.          int var6 = var5;
  175.          Object[] var8 = new Object[]{this.name};
  176.          MessageFormat var9 = new MessageFormat(field_0.getString("optpkg.versionerror"));
  177.          String var10 = var9.format(var8);
  178.          int var11 = var1.indexOf("-");
  179.          int var12 = var1.indexOf("_");
  180.          if (var11 == -1 && var12 == -1) {
  181.             try {
  182.                return Integer.parseInt(var1) * 100;
  183.             } catch (NumberFormatException var18) {
  184.                System.out.println(var10);
  185.                return 0;
  186.             }
  187.          } else if (var12 == -1) {
  188.             int var25;
  189.             try {
  190.                var25 = Integer.parseInt(var1.substring(0, var11));
  191.             } catch (NumberFormatException var20) {
  192.                System.out.println(var10);
  193.                return 0;
  194.             }
  195.  
  196.             String var14 = var1.substring(var11 + 1);
  197.             String var15 = "";
  198.             byte var16 = 0;
  199.             if (var14.indexOf("ea") != -1) {
  200.                var15 = var14.substring(2);
  201.                var16 = 50;
  202.             } else if (var14.indexOf("alpha") != -1) {
  203.                var15 = var14.substring(5);
  204.                var16 = 40;
  205.             } else if (var14.indexOf("beta") != -1) {
  206.                var15 = var14.substring(4);
  207.                var16 = 30;
  208.             } else if (var14.indexOf("rc") != -1) {
  209.                var15 = var14.substring(2);
  210.                var16 = 20;
  211.             }
  212.  
  213.             if (var15 != null && !var15.equals("")) {
  214.                try {
  215.                   return var25 * 100 - var16 + Integer.parseInt(var15);
  216.                } catch (NumberFormatException var19) {
  217.                   System.out.println(var10);
  218.                   return 0;
  219.                }
  220.             } else {
  221.                return var25 * 100 - var16;
  222.             }
  223.          } else {
  224.             int var13;
  225.             try {
  226.                var13 = Integer.parseInt(var1.substring(0, var12));
  227.                char var7 = var1.charAt(var5 - 1);
  228.                if (Character.isLetter(var7)) {
  229.                   var2 = Character.getNumericValue(var7);
  230.                   var6 = var5 - 1;
  231.                   var4 = Integer.parseInt(var1.substring(var12 + 1, var6));
  232.                   if (var2 >= Character.getNumericValue('a') && var2 <= Character.getNumericValue('z')) {
  233.                      var3 = var4 * 100 + var2;
  234.                   } else {
  235.                      var3 = 0;
  236.                      System.out.println(var10);
  237.                   }
  238.                } else {
  239.                   var4 = Integer.parseInt(var1.substring(var12 + 1, var6));
  240.                }
  241.             } catch (NumberFormatException var21) {
  242.                System.out.println(var10);
  243.                return 0;
  244.             }
  245.  
  246.             return var13 * 100 + var4 + var3;
  247.          }
  248.       } else {
  249.          return 0;
  250.       }
  251.    }
  252. }
  253.